package dao

import (
	"gitee.com/shuwenhe/shuwen/cart/model"
	"gitee.com/shuwenhe/shuwen/cart/util"
)

func GetCartItemByItemIDAndCartID(itemID, cartID string) (*model.CartItem, error) { // 根据商品ID获取购物项
	sql := "select id,count,amount,cart_id from cart_item where item_id = ? and cart_id = ?"
	row := util.Db.QueryRow(sql, itemID, cartID)
	cartItem := &model.CartItem{}
	err := row.Scan(&cartItem.CartItemID, &cartItem.Count, &cartItem.Amount, &cartItem.CartID)
	if err != nil {
		return nil, err
	}
	return cartItem, nil
}

func GetCartItemsByCartID(cartID string) ([]*model.CartItem, error) { // 根据购物车ID获取购物项
	sql := "select id,count,amount,cart_id from cart_item where cart_id = ?"
	rows, err := util.Db.Query(sql, cartID)
	if err != nil {
		return nil, err
	}
	var cartItems []*model.CartItem
	for rows.Next() {
		cartItem := &model.CartItem{} // 创建cartItem
		err = rows.Scan(&cartItem.CartItemID, &cartItem.Count, &cartItem.Amount, &cartItem.CartID)
		if err != nil {
			return nil, err
		}
		cartItems = append(cartItems, cartItem)
	}
	return cartItems, nil
}

func AddCartItem(cartItem *model.CartItem) error { // 向购物车表中插入购物项，在添加购物车时调用添加购物项方法添加购物项
	sql := "insert into cart_item(count,amount,item_id,cart_id) values(?,?,?,?)"
	_, err := util.Db.Exec(sql, cartItem.Count, cartItem.GetAmount(), cartItem.Item.ID, cartItem.CartID)
	if err != nil {
		return err
	}
	return nil
}
